package servicos.atualizacao;

/**
 * Importação das bibliotecas necessárias para a implementação da classe.
 */
import dominio.investimentos.Acao;
import servicos.persistencia.Transacao;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.ResourceBundle;
import javax.swing.JOptionPane;

/**
 * @author Filipe Barbosa de Almeida - 09/0006097
 */
public class Atualizacao extends Thread {
    
    /**
     * Declaraçao dos Atributos da Classe Atualização
     */
    private Acao acao;
    private static ResourceBundle myResources;
    private static String resultado;
    private static String vetor[];
    private static String valor[];
    private static int tamanho1;
    private static int tamanho2;
    private static int tamanho3;
    private static String dataFinal;
    
     /** Metodo para atualização dos dados do Ativo
      * @param String acao -  Recebe o nome do Ativo
      */
                 
    @Override
    public void run(){
        
	while(true){ 

        if(Thread.interrupted() == true){
            break;
        }

        try {
        
            URL url = new URL("http://download.finance.yahoo.com/d/quotes.csv?s=" + acao + "&f=sl1d1t1c1ohgv&e=.csv"); // Exemplo: "http://download.finance.yahoo.com/d/quotes.csv?s=MMXM3.SA&f=sl1d1t1c1ohgv&e=.csv"
            URLConnection yahooConnection = url.openConnection();

            BufferedReader dado;
            dado = new BufferedReader(new InputStreamReader(yahooConnection.getInputStream()));
            String inputLine;

        while ((inputLine = dado.readLine()) != null) {

            resultado = inputLine;

            vetor = resultado.split(",");
            Atualizacao.tamanho1 = vetor[0].length();
            Atualizacao.tamanho2 = vetor[2].length();
            Atualizacao.tamanho3 = vetor[3].length();
            }
            
            /**
            * Inserção dos atributos da ação no banco de dados.
            */
            Transacao.abrir();
            dataFinal = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
            
            String sql = "INSERT INTO "+ acao +" (idAcao, bolsa_idBolsa, nome, valorMaximo, valorMinimo, abertura, valorAtual, variacao, media, quantidade) "
                    + "VALUES ( "
                    + "'"
                    +vetor[0].substring(1,tamanho1 - 1)
                    + "', "
                    + "'"
                    + vetor[6]
                    + "', "
                    + "'"
                    + vetor[7]
                    + "', "
                    + "'"
                    + dataFinal
                    + "', "
                    + "'"
                    + vetor[1]
                    + "', "
                    + "'"
                    + vetor[4]
                    + "') ";

            System.out.println(sql);
            Transacao.executar(sql);
            Transacao.commit();

            dado.close();
            sleep(1000);
                        
        } catch (Exception ex) {
            Logger.getLogger(Atualizacao.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null,myResources.getString("mensagem.erros.try")+ ex.getMessage());
        }
	}
    }	
}
/**
 * Fim da Classe atualização
 */
